import uuid
import sys
import os
from data_analysis import predict
from read_data import read_data, drop_features
from missing_scale import fill_missing_values, scale_data

# 获取前端发送过来的文件地址
predict_file_path = sys.argv[1]
predict_json_path = sys.argv[2]

print(f"接收到的文件路径参数: {predict_file_path}")
print(f"JSON输出名称: {predict_json_path}")

# 【修改点1】处理文件路径 - 支持URL和本地路径
if predict_file_path.startswith('http://'):
    # 如果是URL，提取文件名并转换为本地路径
    filename = os.path.basename(predict_file_path)
    predict_file_path = os.path.join('D:/Software-Cup/DataTest', filename)
    print(f"URL转换为本地路径: {predict_file_path}")

# 【修改点2】验证文件是否存在
if not os.path.exists(predict_file_path):
    print(f"错误: 文件不存在 - {predict_file_path}")
    # 列出DataTest目录的文件
    datatest_dir = 'D:/Software-Cup/DataTest'
    if os.path.exists(datatest_dir):
        print(f"\nDataTest目录内容:")
        for file in os.listdir(datatest_dir):
            print(f"  - {file}")
    sys.exit(1)

print(f"文件存在，开始处理: {predict_file_path}")

# 读取文件中的数据
data, y = read_data(predict_file_path)

data = drop_features(data)

data = fill_missing_values(data)

data = scale_data(data)

# 【修改点3】修正输出目录路径 - 从 D:\code\ 改为 D:\
output_directory = 'D:/Software-Cup/json'

# 确保输出目录存在
if not os.path.exists(output_directory):
    os.makedirs(output_directory)
    print(f"创建输出目录: {output_directory}")

output_name = f'{predict_json_path}.json'

# 将文件名赋值给变量此变量是在线预测输出的json文件名
output_predict_file_name = os.path.join(output_directory, output_name)

print(f"JSON输出路径: {output_predict_file_name}")

# 【修改点4】修正模型路径 - 从 D:\code\ 改为 D:\
model_path = 'D:/Software-Cup/python/dnn_model_88.h5'

# 验证模型文件是否存在
if not os.path.exists(model_path):
    print(f"错误: 模型文件不存在 - {model_path}")
    sys.exit(1)

print(f"使用模型: {model_path}")

# 执行预测
predict(model_path, data, output_predict_file_name, predict_file_path)

print("预测完成!")
